package main

import (
	"encoding/json"
	"fmt"
)

type Stu struct {
	Name string `json:name`
	Age  int
}

func main() {
	stu := Stu{
		Name: "张三",
		Age:  18,
	}
	//将一个结构体，打包成json。注意，返回的不是字符串，而是 []byte 类型
	jsonStu, err := json.Marshal(stu)

	if err != nil {
		fmt.Println("打包json失败")
	}
	//jsonStu是[]byte类型，转化成string类型便于查看
	stuString := string(jsonStu)
	fmt.Println("打包成json字符串:", stuString)

	//将json字符串转换成映射
	m := map[string]interface{}{} //先创建一个空的映射
	//同理 Unmarshal函数也只接受 []byte 类型，所以要先把字符串转换一下
	json.Unmarshal([]byte(stuString), &m)
	fmt.Println("将json字符串，转换成映射：", m)

	//json字符串转结构体
	newStu := Stu{}

	json.Unmarshal([]byte(stuString), &newStu)
	fmt.Println("将json字符串，转换成结构体：", newStu)
}
